package com.example.mybatis.mapper;

import com.example.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2024-01-08
 * Time: 14:57
 */


/**
 * MyBatis 面向接口编程的两个一直
 * 1. 映射文件的 namespace 要和 mapper 接口的全类名一致
 * 2. 映射文件中的 SQL 语句的 id 要和 mapper 接口中的方法名一致
 *
 * 表--实体类
 * mapper接口--映射文件
 */


public interface UserMapper {

    /**
     * 添加用户信息
     * @return
     */
    int insertUser();

    /**
     * 修改用户信息
     */
    void updateUser();

    /**
     * 删除用户信息
     */
    void deleteUser();

    /**
     * 查询一个实体类 User 对象
     */
    User getUserById();

    /**
     * 查询所有的用户信息
     */
    List<User> getAllUser();


    /**
     * 根据用户名查询用户信息
     */
    User getUserByName(String userName);


    /**
     * 验证登录
     */
    User checkLogin(String userName, String password);


    /**
     * 验证登录（参数为 map ）
     */
    User checkLoginMap(Map<String, Object> map);


    /**
     * 添加用户信息，传入实体类对象
     */
    int insertByUser(User user);


    /**
     * 验证登录（使用 @param 注解）
     */
    User checkLoginByParam(@Param("userName") String userName,  @Param("password") String password);

}
